package controlador;

import classes.Entrada;
import classes.ItensProduto;
import classes.Produto;
import dao.DaoEntrada;
import dao.IDaoEntrada;
import erro.ConexaoException;
import erro.ConsultaException;
import erro.DaoException;
import erro.GeralException;
import java.util.ArrayList;

public class ControladorEntrada {

    Entrada ent = new Entrada();
    ItensProduto it = new ItensProduto();
    Produto prod = new Produto();
    private IDaoEntrada daoEnt = new DaoEntrada();

    public ControladorEntrada() {

        this.daoEnt = new DaoEntrada();
    }

    public void inserir(Entrada ent, ItensProduto it, Produto prod) throws GeralException {
        try {
            this.daoEnt.inserir(ent, it, prod);
        } catch (ConexaoException ex) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados. Informe ao Administrador!");
        } catch (DaoException e) {
            throw new GeralException("Não foi possivel inserir a Entrada do Produto! Informe ao Administrador!");
        }
    }
    
     public void deletar(Entrada ent, Produto prod) throws ConexaoException, ConsultaException, GeralException {
        try {
            this.daoEnt.deletar(ent, prod);
        } catch (ConexaoException ex) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados. Informe ao Administrador!");
        } catch (DaoException e) {
            throw new GeralException("Não foi possivel deletar a Entrada do Produto! Informe ao Administrador!");
        }
    }
     
    public ItensProduto pesquisarIt(ItensProduto it) throws GeralException, DaoException {
        try {
            this.daoEnt.pesquisarIt(it);
            if (it.getNumLote() == null) {
                throw new DaoException("Items de Produto não encontrado");
            }

        } catch (ConexaoException e) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados. Informe ao Administrador!");
        }
        return (it);
    }

    public Entrada pesquisarEntrada(Entrada ent) throws GeralException, DaoException {
        try {
            this.daoEnt.pesquisar(ent);
            if (it.getNumLote() == null) {
                throw new DaoException("Entrada de Produto não encontrada.");
            }
        } catch (ConexaoException e) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados. Informe ao Administrador!");
        }
        return (ent);
    }

    public ArrayList<Entrada> pesquisarEntradaEnt(Entrada ent) throws ConexaoException, ConsultaException {
        return (ArrayList<Entrada>) this.daoEnt.pesquisarEnt(ent);
    }

    /**
     * Trata os possiveis erros na hora da listagem
     * @param it
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Entrada> listarEntrada(Entrada ent) throws ConexaoException, ConsultaException {
        return (ArrayList<Entrada>) this.daoEnt.listarEnt();
    }

    /**
     * Trata os possiveis erros na hora da listagem
     * @param it
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<ItensProduto> listar(ItensProduto ip) throws ConexaoException, ConsultaException {
        return (ArrayList<ItensProduto>) this.daoEnt.listar(ip);
    }
}
